package com.linchuansi.framework;

/**
 * Bean作用域枚举类
 * 定义Spring容器中Bean的生命周期和创建方式
 */
public enum BeanScope {
    /**
     * 单例模式
     * 在Spring容器中只创建一个实例，所有请求都返回同一个对象
     */
    SINGLETON("singleton", "单例模式"),

    /**
     * 原型模式
     * 每次请求都创建一个新的实例
     */
    PROTOTYPE("prototype", "原型模式");

    private final String code;
    private final String description;

    BeanScope(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据code获取对应的BeanScope枚举值
     *
     * @param code 作用域代码
     * @return 对应的BeanScope枚举值
     */
    public static BeanScope fromCode(String code) {
        for (BeanScope scope : BeanScope.values()) {
            if (scope.code.equals(code)) {
                return scope;
            }
        }
        throw new IllegalArgumentException("Unknown bean scope code: " + code);
    }
}